/*******************************************************************************
 ** Name: help.cpp                                                             **
 ** Description:                                                              **
 **                                                                           **
 ** Open Source Initiative (OSI) Approved 2-clause BSD License                **
 **                                                                           **
 **  Copyright (c) 2009-2010 Barry "Gian" James  <bjames@munixos.net>         **
 **  All rights reserved.                                                     **
 **                                                                           **
 **  Redistribution and use in source and binary forms, with or without       **
 **  modification, are permitted provided that the following conditions are   **
 **  met:                                                                     **
 **                                                                           **
 **  * Redistributions of source code must retain the above copyright notice, **
 **    this list of conditions and the following disclaimer.                  **
 **  * Redistributions in binary form must reproduce the above copyright      **
 **    notice, this list of conditions and the following disclaimer in the    **
 **    documentation and/or other materials provided with the distribution.   **
 **                                                                           **
 **  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS      **
 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED **
 ** TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A           **
 ** PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT        **
 ** HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,    **
 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED  **
 ** TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR    **
 ** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF    **
 ** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING      **
 ** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS        **
 ** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.              **
 **                                                                           **
 ******************************************************************************/
// Created on March 17, 2010, 8:21 AM
// Modified $Date$ by $Author$
#define help_cpp_ID   "$Id$"

#include "help.hpp"
#include "sanctiond.hpp"
#include "log.hpp"

char
HelpFileIndex::sep = ':';

#define HELP_IDX_EXEC	"../tools"

int
HelpFileIndex::Compile()
{
	DBGFUNC();
	std::string	ifl(GlobalGetCfgSettings()["help_file"]);
	std::string	ofl(GlobalGetCfgSettings()["help_index"]);

	if (execl(HELP_IDX_EXEC,"help_index","--infile=data/txt/help.txt",
			"--outfile=data/txt/help.idx") == -1)
	{
		debug::log->out(LOG_CRIT,"Problems generating help index");
	}

	// Read the index file
	std::ifstream ifile(ofl);
	if (!ifile.good()) {
		debug::log->out(LOG_CRIT,"Problem opening help index");
		return 0;
	}
	char buff[256];
	while(!ifile.eof())
	{
		ifile.getline(buff,256);
		if (buff[0] == ';')
			continue;
		char * ptr = strtok(buff,":");
		char * idx = strtok(NULL,"\n");

		index[std::string(ptr)] = atoi(idx);
		debug::log->out(LOG_DEBUG,"Found help topic %s at index %d",ptr,atoi(idx));
	}
	return index.size();
}


HelpFile::HelpFile(const std::string & n)
{
	fl = n;
}

bool
HelpFile::Init()
{
	helpFile.open(fl);
	if (helpFile.good())
		return true;
	else
		return false;
}

// TODO
int
HelpFile::Parse()
{
	DBGFUNC();
	char buff[256];
	while(!helpFile.eof())
	{
		helpFile.getline(buff,256);

	}


	return 0;
}

// TODO
void
HelpFile::Print(int s, const std::string & t)
{
	DBGFUNC();

}
